﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class Forma_4 : System.Web.UI.Page
{
    private string SessionID;
    private Boolean FolioExists;
    private int Folio;
    private Int32 IdDF;
    private DatabaseConnection dbCon;

    private void Page_Load(object sender, System.EventArgs e)
    {
        SessionValidation();

        // Se verifíca si existe un Folio actual para cargar los datos
        // que han sido previamente guardados
        DatabaseConnection dbCon = new DatabaseConnection();
        FolioExists = dbCon.FolioExistsForCurrentUser(ref Folio, SessionID);
        AportadoresDataSource.ConnectionString = dbCon.GetConnectionString();
        dbCon.CloseConnection();

        if (FolioExists && !Page.IsPostBack)
        {
            LoadFormWithPastData();
        }
    }

    private void LoadFormWithPastData()
    {
        DatabaseConnection dbCon = new DatabaseConnection();
        String concepto, Smonto;
        String queryE = "SELECT [IdDF] ,[Folio] ,[DesembolsoFamiliar_Concepto] ,[DesembolsoFamiliar_Monto] ,[DesembolsoFamiliar_Semestre]" +
                        " FROM [wbecfildb].[dbo].[DesembolsoFamiliar] " +
                        " WHERE [DesembolsoFamiliar].[Folio] =  " + Folio + ";";

        SqlDataReader ConceptosReader = dbCon.ExecuteSelect(queryE);

        while (ConceptosReader.Read())
        {
            foreach (Control c in Form.Controls)
            {
                if (c.Controls.Count > 0)
                {
                    foreach (Control c2 in c.Controls)
                    {
                        concepto = ConceptosReader["DesembolsoFamiliar_Concepto"].ToString();
                        if (c2 is TextBox && c2.ID.Equals(concepto))
                        {
                            Smonto = ConceptosReader["DesembolsoFamiliar_Monto"].ToString();
                            ((TextBox)c2).Text = String.Format("{0:F2}", float.Parse(Smonto));
                        }
                    }
                }
            }
        }
        ConceptosReader.Close();//END DE|SEMBOLSO
        dbCon.CloseConnection();
    }

    protected void InsertData(object sender, EventArgs e)
    {
        String query; //insert o update
        Boolean existe;
        DatabaseConnection dbCon = new DatabaseConnection();

        foreach (Control c in Form.Controls)
        {
            if (c.Controls.Count > 0)
            {
                foreach (Control c2 in c.Controls)
                {
                    if (c2 is TextBox && c2.ID.StartsWith("DesembolsoFamiliar"))
                    {
                        existe = dbCon.ConceptoExistsForCurrentUser(ref IdDF, Folio, c2.ID, "DesembolsoFamiliar");
                        if (!existe)
                        {
                            query = "INSERT INTO [wbecfildb].[dbo].[DesembolsoFamiliar]" +
                                         "([Folio] ,[DesembolsoFamiliar_Concepto] ,[DesembolsoFamiliar_Monto] ,[DesembolsoFamiliar_Semestre])" +
                                         "VALUES (" + Folio + ",'" + (((TextBox)c2).ID) + "','" + (((TextBox)c2).Text) + "' , 'Actual')";
                        }
                        else
                        {
                            query = "UPDATE [wbecfildb].[dbo].[DesembolsoFamiliar] SET " +
                                "[DesembolsoFamiliar_Concepto] = '" + (((TextBox)c2).ID) + "', " +
                                "[DesembolsoFamiliar_Monto]    = '" + (((TextBox)c2).Text) + "', " +
                                "[DesembolsoFamiliar_Semestre] = 'Actual'" +
                                " WHERE [IdDF] = " + IdDF + ";";
                        }
                        int rowsAffected = dbCon.ExecuteNonQuery(query);
                    }
                }
            }
        }
        dbCon.CloseConnection();
        Response.Redirect("~/Forma/Forma5.aspx");
    }

    /*
     *  Fija el DesembolsoFamiliar de la Familia a 0.00 en la Base de Datos
     * 
     */
    protected void Borrar(object sender, EventArgs e)
    {
        String query; //insert o update
        Boolean existe;
        DatabaseConnection dbCon = new DatabaseConnection();

        foreach (Control c in Form.Controls)
        {
            if (c.Controls.Count > 0)
            {
                foreach (Control c2 in c.Controls)
                {
                    if (c2 is TextBox && c2.ID.StartsWith("DesembolsoFamiliar"))
                    {
                        existe = dbCon.ConceptoExistsForCurrentUser(ref IdDF, Folio, c2.ID, "DesembolsoFamiliar");
                        if (!existe)
                        {
                            query = "INSERT INTO [wbecfildb].[dbo].[DesembolsoFamiliar]" +
                                         "([Folio] ,[DesembolsoFamiliar_Concepto] ,[DesembolsoFamiliar_Monto] ,[DesembolsoFamiliar_Semestre])" +
                                         "VALUES (" + Folio + ",'" + (((TextBox)c2).ID) + "','" + 0.00 + "' , 'Actual')";
                        }
                        else
                        {
                            query = "UPDATE [wbecfildb].[dbo].[DesembolsoFamiliar] SET " +
                                "[DesembolsoFamiliar_Concepto] = '" + (((TextBox)c2).ID) + "', " +
                                "[DesembolsoFamiliar_Monto]    = '" + 0.00 + "', " +
                                "[DesembolsoFamiliar_Semestre] = 'Actual'" +
                                " WHERE [IdDF] = " + IdDF + ";";
                        }
                        int rowsAffected = dbCon.ExecuteNonQuery(query);
                    }
                }
            }
        }
        dbCon.CloseConnection();
        Response.Redirect("~/Forma/Forma4.aspx");
    }

    /* Valida que la sesión del usuario sea la correcta para mostrar
     *  el contenido de esta página
     */
    protected void SessionValidation()
    {
        SessionID = (String)Session["SessionID"];
        String UserType = (String)Session["UserType"];

        if (String.IsNullOrEmpty(SessionID) || String.IsNullOrEmpty(UserType))
        {
            Session.RemoveAll();
            Response.Redirect("~/Default.aspx");
        }
        else
        {
            if (!String.Equals(UserType, "Alumnos"))
            {
                Session.RemoveAll();
                Response.Redirect("~/Default.aspx");
            }
        }
    }

    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        e.Command.CommandText = "SELECT [IdAportadores] ,[Folio] ,[Aportadores_Principal],[Aportadores_NombreCompleto]" +
                                ",[Aportadores_NombreEmpresa],[Aportadores_Puesto],[Aportadores_Parentesco],[Aportadores_Sueldo]" +
                                ",[Aportadores_InteresesDividendos],[Aportadores_Honorarios],[Aportadores_Rentas],[Aportadores_VentasComisiones]" +
                                ",[Aportadores_Aguinaldo],[Aportadores_Ahorro],[Aportadores_Bonos],[Aportadores_Otros]" +
                                ",([Aportadores_Sueldo]+[Aportadores_InteresesDividendos]+[Aportadores_Honorarios]+[Aportadores_Rentas]" +
                                "+[Aportadores_VentasComisiones]+[Aportadores_Aguinaldo]+[Aportadores_Ahorro]+[Aportadores_Bonos] +[Aportadores_Otros]) AS 'TotalIngresosFamiliar'" +
                                " FROM [wbecfildb].[dbo].[Aportadores] WHERE Folio = '" + Folio + "';";
    }

    protected void ListView_Aportadores(object sender, ListViewCommandEventArgs e)
    {
        if (e.CommandName == "Insert")
        {
            CheckBox chkPrincipal = (CheckBox)e.Item.FindControl("chkPrincipal");
            TextBox txtNombreCompleto = (TextBox)e.Item.FindControl("txtNombreCompleto");
            TextBox txtNombreEmpresa = (TextBox)e.Item.FindControl("txtNombreEmpresa");
            TextBox txtPuesto = (TextBox)e.Item.FindControl("txtPuesto");
            TextBox txtParentesco = (TextBox)e.Item.FindControl("txtParentesco");
            TextBox txtSueldo = (TextBox)e.Item.FindControl("txtSueldo");
            TextBox txtInteresesDividendos = (TextBox)e.Item.FindControl("txtInteresesDividendos");
            TextBox txtHonorarios = (TextBox)e.Item.FindControl("txtHonorarios");
            TextBox txtRentas = (TextBox)e.Item.FindControl("txtRentas");
            TextBox txtVentasComisiones = (TextBox)e.Item.FindControl("txtVentasComisiones");
            TextBox txtAguinaldo = (TextBox)e.Item.FindControl("txtAguinaldo");
            TextBox txtAhorro = (TextBox)e.Item.FindControl("txtAhorro");
            TextBox txtBonos = (TextBox)e.Item.FindControl("txtBonos");
            TextBox txtOtros = (TextBox)e.Item.FindControl("txtOtros");

            String insertCommand = "INSERT INTO [wbecfildb].[dbo].[Aportadores] " +
                                   "([Folio] ,[Aportadores_Principal] ,[Aportadores_NombreCompleto] ,[Aportadores_NombreEmpresa] ,[Aportadores_Puesto] " +
                                   ",[Aportadores_Parentesco] ,[Aportadores_Sueldo] ,[Aportadores_InteresesDividendos] ,[Aportadores_Honorarios] " +
                                   ",[Aportadores_Rentas] ,[Aportadores_VentasComisiones] ,[Aportadores_Aguinaldo] ,[Aportadores_Ahorro] " +
                                   ",[Aportadores_Bonos] ,[Aportadores_Otros]) VALUES " +
                                   "(" + Folio + ",'" + chkPrincipal.Checked + "','" + txtNombreCompleto.Text + "','" + txtNombreEmpresa.Text + "','" + txtPuesto.Text + "'" +
                                   ",'" + txtParentesco.Text + "'," + txtSueldo.Text + "," + txtInteresesDividendos.Text + "," + txtHonorarios.Text +
                                   "," + txtRentas.Text + "," + txtVentasComisiones.Text + "," + txtAguinaldo.Text + "," + txtAhorro.Text +
                                   "," + txtBonos.Text + "," + txtOtros.Text + ");";

            AportadoresDataSource.InsertCommand = insertCommand;
        }
        else if (e.CommandName == "Update")
        {
            CheckBox chkUpPrincipal = (CheckBox)e.Item.FindControl("chkUpPrincipal");
            TextBox txtUpNombreCompleto = (TextBox)e.Item.FindControl("txtUpNombreCompleto");
            TextBox txtUpNombreEmpresa = (TextBox)e.Item.FindControl("txtUpNombreEmpresa");
            TextBox txtUpPuesto = (TextBox)e.Item.FindControl("txtUpPuesto");
            TextBox txtUpParentesco = (TextBox)e.Item.FindControl("txtUpParentesco");
            TextBox txtUpSueldo = (TextBox)e.Item.FindControl("txtUpSueldo");
            TextBox txtUpInteresesDividendos = (TextBox)e.Item.FindControl("txtUpInteresesDividendos");
            TextBox txtUpHonorarios = (TextBox)e.Item.FindControl("txtUpHonorarios");
            TextBox txtUpRentas = (TextBox)e.Item.FindControl("txtUpRentas");
            TextBox txtUpVentasComisiones = (TextBox)e.Item.FindControl("txtUpVentasComisiones");
            TextBox txtUpAguinaldo = (TextBox)e.Item.FindControl("txtUpAguinaldo");
            TextBox txtUpAhorro = (TextBox)e.Item.FindControl("txtUpAhorro");
            TextBox txtUpBonos = (TextBox)e.Item.FindControl("txtUpBonos");
            TextBox txtUpOtros = (TextBox)e.Item.FindControl("txtUpOtros");
            TextBox IdAportadores = (TextBox)e.Item.FindControl("IdAportadores");

            String updateCommand = "UPDATE [wbecfildb].[dbo].[Aportadores]" +
                                  " SET [Aportadores_Principal] ='" + chkUpPrincipal.Checked + "'" +
                                  ",[Aportadores_NombreCompleto] ='" + txtUpNombreCompleto.Text + "'" +
                                  ",[Aportadores_NombreEmpresa] ='" + txtUpNombreEmpresa.Text + "'" +
                                  ",[Aportadores_Puesto] ='" + txtUpPuesto.Text + "'" +
                                  ",[Aportadores_Parentesco] ='" + txtUpParentesco.Text + "'" +
                                  ",[Aportadores_Sueldo] =" + txtUpSueldo.Text +
                                  ",[Aportadores_InteresesDividendos] =" + txtUpInteresesDividendos.Text +
                                  ",[Aportadores_Honorarios] =" + txtUpHonorarios.Text +
                                  ",[Aportadores_Rentas] =" + txtUpRentas.Text +
                                  ",[Aportadores_VentasComisiones] =" + txtUpVentasComisiones.Text +
                                  ",[Aportadores_Aguinaldo] =" + txtUpAguinaldo.Text +
                                  ",[Aportadores_Ahorro] =" + txtUpAhorro.Text +
                                  ",[Aportadores_Bonos] =" + txtUpBonos.Text +
                                  ",[Aportadores_Otros] =" + txtUpOtros.Text +
                                  " WHERE [Folio] = " + Folio + " AND [IdAportadores] = " + IdAportadores.Text + ";";

            AportadoresDataSource.UpdateCommand = updateCommand;

        }
        else if (e.CommandName == "Delete")
        {
            TextBox IdAportadores = (TextBox)e.Item.FindControl("IdAportadores");
            String deleteCommand = "DELETE FROM Aportadores WHERE IdAportadores = " + Convert.ToInt32(IdAportadores.Text);
            AportadoresDataSource.DeleteCommand = deleteCommand;
        }
    }
}